package com.qp.basics.estivate;

/**
 * 类型转换。 我们定义了一些通用的类型，本接口的实现类来提供这些通用类型到数据库的类型转换以及到java的类型转换。
 * java类型有限有些未必合适，比如字符串对于java只有string， 但不同长度的字符串在数据库里应该采用的数据类型也不一致，
 * 如在mysql里短一些的字符串使用varchar比较合适，但大字符串使用text合适，
 * 类似的在oracle里小的用varchar2而大的应该用clob更合适。
 * 
 * 目前阶段，我们先不将java的类型作为重点了。
 * 
 * 标准数据库类型有： string 一般是4000以下的字符串 text 一般是4000以上的字符串
 * 
 * int long float double decimal
 * 
 * date datetime
 * 
 * 
 * 
 */
public interface DataTypeConvertor {
	/**
	 * 获取数据库数据类型。
	 * 
	 * @param str
	 *            约定的
	 * @return
	 */
	String getDataType(String stdDataType);

	String getJavaType(String stdDataType);

	/**
	 * 根据数据库原始的数据类型得到标准化的数据类型。
	 * 
	 * @param dataType
	 * @return
	 */
	String getStdDataType(String dataType);

	/**
	 * 用于拼接更新和创建语句
	 * 
	 * @param stdDataType
	 * @param value
	 * @return
	 */
	String getDataJavaStringValue(String stdDataType, String value);
}
